package 线程打断;

public class Test2 {
    public static void main(String[] args) throws InterruptedException {
        Thread t=new Thread(()->{
            //Thread类内部有线程标志位用于判定当前的循环是否要结束
           while (!Thread.currentThread().isInterrupted()){
               System.out.println("线程工作中");
               try {
                   Thread.sleep(1000);
               } catch (InterruptedException e) {
                   e.printStackTrace();//用于打印出异常的堆栈信息的Java方法
                   break;
               }
           }
        });
        t.start();
        Thread.sleep(5000);
        System.out.println("让t线程终止");
        t.interrupt();//把上述Thread对象内部的标志位设置为true
        //即使线程内部的逻辑出现阻塞（sleep），也是可以唤醒
        //使sleep触发一个异常从而提前被唤醒（这是手动定义标志位无法实现的效果）
    }
}
